/* 
 * Autor: Manoela Camila RA:408131
 * Data Criação: 28/05/12
 * Última Modificação: 20/08/12
 *
 */

#include "ItemCarteira.h"

/*Destrutor*/
ItemCarteira::~ItemCarteira(){}

/*Construtor Padrão*/
ItemCarteira::ItemCarteira(){}

/*Construtor de Cópia*/
ItemCarteira::ItemCarteira(const ItemCarteira &item){

	dataAplicacao = item.dataAplicacao;
	vacina = item.vacina;

}

/*Construtor com Parâmetros*/
ItemCarteira::ItemCarteira(Data dataAplic, Vacina vac){

	dataAplicacao = dataAplic;
	vacina = vac;
}

/*Adiciona um novo item*/
void ItemCarteira::adicionarItem(){

	cout << "Informe a data de Aplicação" << endl;
	cin >> dataAplicacao;
	cout << "Informe os dados da Vacina a ser aplicada" << endl;
	cin >> vacina;
}

/*Altera um item com parâmetros*/
void ItemCarteira::alterarItem(Data dataAplic, Vacina vac){

	dataAplicacao = dataAplic;
	vacina = vac;
}

/*Alterar um item sem parâmetros*/
void ItemCarteira::alterarItem(){

	cout << "Informe a nova data de Aplicação" << endl;
	cin >> dataAplicacao;
	cout << "Informe os dados da Vacina a ser aplicada" << endl;
	cin >> vacina;
}

/*Consulta um item, exibindo seus dados*/
void ItemCarteira::consultarItem() const{

	cout << "Data Aplicação: " << dataAplicacao << endl;
	cout << "Vacina:\n" << vacina << endl;
	
}

/*Confirma se a pessoa quer mesmo excluir o item*/
int ItemCarteira::excluirItem(){

	int confirmacao;
	
	cout << "Deseja mesmo exluir esse item? 1- Sim	2-Não" << endl << endl;
	cout << "Data Aplicação: " << dataAplicacao << endl << "Vacina: " << vacina << endl << endl;
	cin >> confirmacao;
	
	while (confirmacao != 1 && confirmacao != 2){
		cout << "Opção Inválida" << endl;
		cout << "Deseja mesmo exluir esse item? 1- Sim	2-Não" << endl;
		cin >> confirmacao;
	}
	
	if (confirmacao == 1)
		return 1;
	return 0;
}

/*retorna a data da aplicação*/
Data ItemCarteira::getDataAplicacao() const{

	return dataAplicacao;

}

Vacina ItemCarteira::getVacina() const {

	return vacina;

}

/*sobrecarga do operador de fluxo << - cout*/
ostream &operator<<(ostream &o, const ItemCarteira &cart){

	o << "Vacina:\n" << cart.vacina << "\n" << "Data Aplicação: " << cart.dataAplicacao << endl;
	
	return o;
}

/*Sobrecarga do operador de fluxo >> - cin*/
istream &operator>>(istream &o, ItemCarteira &item){

	o >> item.dataAplicacao;
	o >> item.vacina;

}

/*Sobrecarga operador de igualdade*/
bool ItemCarteira::operator==(const ItemCarteira &item){

	if (dataAplicacao == item.dataAplicacao && vacina == item.vacina)
		return true;
	return false;
}

/*Sobrecarga do operador de desigualdade*/
bool ItemCarteira::operator!=(const ItemCarteira &item){

	if (dataAplicacao == item.dataAplicacao && vacina == item.vacina)
		return false;
	return true;
}
